package com.jinhongone.pattern.structure.combination;

/*
* 菜单组件：抽象根节点角色
*   作用：提前树枝节点和叶子节点的共有方法和属性，统一对外提供便于外部操作不必区分叶子、树枝节点。
* */
public abstract class MenuComponent {
    //菜单名称
    protected String name;
    //菜单等级
    protected int level;

    //提供共有方法，子类直接调用不必重复造轮子
    public String getName() {
        return name;
    }
    //添加子页面，方法默认不支持，在树枝节点重新该方法
    public void addSub(MenuComponent component){
        throw new UnsupportedOperationException();
    }
    //删除子页面，方法默认不支持，在树枝节点重新该方法
    public void removeSub(MenuComponent component){
        throw new UnsupportedOperationException();
    }
    //根据索引获取子页面，方法默认不支持，在树枝节点重新该方法
    public MenuComponent getChild(int index){
        throw new UnsupportedOperationException();
    }
    //打印菜单及其子菜单
    abstract void print();

}
